package com.zhuhjay.common.domain;

import com.zhuhjay.common.enums.HttpCode;

import java.util.HashMap;
import java.util.Map;

/**
 * @author ZhuHJay
 * @date 2022/3/20 15:49
 */
public class ResponseJson extends HashMap<String, Object> {

    /** 定义json中key的标签 **/
    private static final String STATUS_TAG = "status";
    private static final String MESSAGE_TAG = "message";
    private static final String DATA_TAG = "data";
    private final Map<String, Object> dataMap = new HashMap<>();

    /** 无参构造 **/
    private ResponseJson(){}

    /** 有参构造: 将状态码和信息以及数据封装到map **/
    private ResponseJson(int code, String message){
        super.put(STATUS_TAG, code);
        super.put(MESSAGE_TAG, message);
        super.put(DATA_TAG, dataMap);
    }

    /** 成功 **/
    public static ResponseJson success(HttpCode code, String message){
        return new ResponseJson(code.getCode(), message);
    }

    /** 成功 **/
    public static ResponseJson success(String message){
        return ResponseJson.success(HttpCode.SUCCESS, message);
    }

    /** 成功 **/
    public static ResponseJson success(HttpCode code){
        return ResponseJson.success(code, code.getDesc());
    }

    /** 成功 **/
    public static ResponseJson success(){
        return ResponseJson.success(HttpCode.SUCCESS.getDesc());
    }

    /** 失败 **/
    public static ResponseJson error(HttpCode code, String message){
        return new ResponseJson(code.getCode(), message);
    }

    /** 失败 **/
    public static ResponseJson error(HttpCode code){
        return new ResponseJson(code.getCode(), code.getDesc());
    }

    /** 失败 **/
    public static ResponseJson error(String message){
        return ResponseJson.error(HttpCode.USER_ERROR, message);
    }

    /** 失败 **/
    public static ResponseJson error(){
        return ResponseJson.error(HttpCode.USER_ERROR.getDesc());
    }

    /** 将数据填充给dataMap **/
    public ResponseJson appendData(String key, Object value){
        dataMap.put(key, value);
        return this;
    }
    
}
